﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using SST_BL;
using System.Data;

namespace TCU
{
    public partial class ManejoCircuito : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack) {
                string user = Request.ServerVariables["REMOTE_USER"].ToString();
                if (MainBL.RevisarPermiso(user.Substring(user.IndexOf("\\") + 1), "Administrador"))
                {
                    this.CargarCircuitos();
                }
                else
                {
                    Server.Transfer("NoAccess.aspx");
                }
            }
        }

        private void CargarCircuitos()
        {
            DataTable dt = MainBL.ListarCircuitos();
            if (dt == null)
            {
                dt = new DataTable();
                dt.Columns.Add("ID", typeof(int));
                dt.Columns.Add("NombreCircuito", typeof(string));
                dt.Columns.Add("Codigo Circuito", typeof(string));
                dt.Rows.Add(0, "No hay ningun circuito...");
                gvCircuitos.AutoGenerateDeleteButton = false;
                gvCircuitos.AutoGenerateEditButton = false;
            }
            else
            {
                gvCircuitos.AutoGenerateDeleteButton = true;
                gvCircuitos.AutoGenerateEditButton = true;
            }
            gvCircuitos.DataSource = dt;
            gvCircuitos.DataBind();
        }

        protected void gvCircuitos_RowCommand(object sender, GridViewCommandEventArgs e)
        {
            CircuitoNotification.ForeColor = System.Drawing.Color.Red;
            if (e.CommandName.Equals("Agregar"))
            {
                TextBox txtNombre = gvCircuitos.FooterRow.FindControl("addNombreCircuito") as TextBox;
                TextBox txtCodigo = gvCircuitos.FooterRow.FindControl("addCodigoCircuito") as TextBox;
                if (txtNombre.Text.Length > 0 && txtCodigo.Text.Length > 0)
                {
                    if (txtCodigo.Text.Length <= 10)
                    {
                        if (!MainBL.ExisteCircuito(txtNombre.Text, txtCodigo.Text))
                        {
                            if (MainBL.AgregarCircuito(txtNombre.Text, txtCodigo.Text))
                            {
                                CircuitoNotification.Text = "El Circuito fue agregado exitosamente!";
                                CircuitoNotification.ForeColor = System.Drawing.Color.Green;
                                this.CargarCircuitos();
                            }
                            else
                            {
                                CircuitoNotification.Text = "El circuito no puedo ser agregado por un error en la base de datos!";
                            }
                        }
                        else
                        {
                            CircuitoNotification.Text = "Ya existe un circuito con este nombre y/o codigo!";
                        }
                    }
                    else
                    {
                        CircuitoNotification.Text = "El codigo debe de tener 10 o menos caracteres!";
                    }

                }
                else
                {
                    CircuitoNotification.Text = "Debes de llenar todos los campos para agregar un circuito!";
                }

            }//if (e.CommandName.Equals("Agregar"))
        }

        protected void gvCircuitos_RowEditing(object sender, GridViewEditEventArgs e)
        {
            gvCircuitos.EditIndex = e.NewEditIndex;
            this.CargarCircuitos();
            Label lbID = gvCircuitos.Rows[e.NewEditIndex].FindControl("lbEditID") as Label;
            TextBox txtNombre = (TextBox)gvCircuitos.Rows[e.NewEditIndex].FindControl("txtEditNombre");
            TextBox txtCodigo = (TextBox)gvCircuitos.Rows[e.NewEditIndex].FindControl("txtEditCodigo");
        }

        protected void gvCircuitos_RowUpdating(object sender, GridViewUpdateEventArgs e)
        {
            Label lbID = gvCircuitos.Rows[e.RowIndex].FindControl("lblEditID") as Label;
            TextBox txtEditNombre = gvCircuitos.Rows[e.RowIndex].FindControl("txtEditNombre") as TextBox;
            TextBox txtEditCodigo = gvCircuitos.Rows[e.RowIndex].FindControl("txtEditCodigo") as TextBox;
            if (txtEditNombre.Text.Length > 0 && txtEditCodigo.Text.Length > 0)
            {
                if (!MainBL.ExisteCircuitoParaEditar(int.Parse(lbID.Text), txtEditNombre.Text, txtEditCodigo.Text))
                {
                    if (MainBL.EditarCircuito(int.Parse(lbID.Text), txtEditNombre.Text, txtEditCodigo.Text))
                    {
                        CircuitoNotification.Text = "Circuito editado!";
                        CircuitoNotification.ForeColor = System.Drawing.Color.Green;
                        gvCircuitos.EditIndex = -1;
                        this.CargarCircuitos();
                    }
                    else
                    {
                        CircuitoNotification.Text = "El circuito no pudo se editado!";
                    }
                }
                else
                {
                    CircuitoNotification.Text = "Ya existe un circuito con ese nombre y/o codigo!";
                }
            }
            else
            {
                CircuitoNotification.Text = "Ninguno de los valores pueden estar vacios!";
            }
        }

        protected void gvCircuitos_RowDeleting(object sender, GridViewDeleteEventArgs e)
        {
            Label id = gvCircuitos.Rows[e.RowIndex].FindControl("lbID") as Label;
            if (MainBL.EliminarCircuito(int.Parse(id.Text)))
                this.CargarCircuitos();
            /*
             Label id = gvInformaticos.Rows[e.RowIndex].FindControl("lbID") as Label;
            if (MainBL.EliminarInformatico(int.Parse(id.Text)))
            {
                notificacion.Text = "El informatico fue eliminado! ";
                notificacion.ForeColor = System.Drawing.Color.Green;
            }
            else {
                notificacion.Text = "El informatico no pudo ser eliminado!";
                notificacion.ForeColor = System.Drawing.Color.Red;
            }
            this.CargarInformaticos();
             */
        }

        protected void gvCircuitos_RowCancelingEdit(object sender, GridViewCancelEditEventArgs e)
        {
            gvCircuitos.EditIndex = -1;
            this.CargarCircuitos();
        }//private void CargarCircuitos() { 

    }
}